/*!
 * \file ExpDumper.cpp
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief 扩展数据导出器实现
 * 
 * \details 本文件实现了扩展数据导出器类ExpDumper的所有接口方法：
 *          - 实现历史数据导出功能
 *          - 支持K线数据导出
 *          - 支持tick数据导出
 *          - 支持Level2数据导出（订单队列、订单明细、逐笔成交）
 *          - 通过WtDtRunner转发导出请求到外部系统
 *          - 提供统一的数据导出接口
 */
#include "ExpDumper.h"
#include "WtDtRunner.h"

extern WtDtRunner& getRunner();

/**
 * @brief 导出历史订单队列数据
 * @details 将指定合约的历史订单队列数据导出到外部系统
 * @param stdCode 标准合约代码
 * @param uDate 交易日期（格式：YYYYMMDD）
 * @param items 订单队列数据数组
 * @param count 订单队列数据数量
 * @return bool 导出是否成功
 */
bool ExpDumper::dumpHisOrdQue(const char* stdCode, uint32_t uDate, WTSOrdQueStruct* items, uint32_t count)
{
	return getRunner().dumpHisOrdQue(_id.c_str(), stdCode, uDate, items, count);
}

/**
 * @brief 导出历史订单明细数据
 * @details 将指定合约的历史订单明细数据导出到外部系统
 * @param stdCode 标准合约代码
 * @param uDate 交易日期（格式：YYYYMMDD）
 * @param items 订单明细数据数组
 * @param count 订单明细数据数量
 * @return bool 导出是否成功
 */
bool ExpDumper::dumpHisOrdDtl(const char* stdCode, uint32_t uDate, WTSOrdDtlStruct* items, uint32_t count)
{
	return getRunner().dumpHisOrdDtl(_id.c_str(), stdCode, uDate, items, count);
}

/**
 * @brief 导出历史逐笔成交数据
 * @details 将指定合约的历史逐笔成交数据导出到外部系统
 * @param stdCode 标准合约代码
 * @param uDate 交易日期（格式：YYYYMMDD）
 * @param items 逐笔成交数据数组
 * @param count 逐笔成交数据数量
 * @return bool 导出是否成功
 */
bool ExpDumper::dumpHisTrans(const char* stdCode, uint32_t uDate, WTSTransStruct* items, uint32_t count)
{
	return getRunner().dumpHisTrans(_id.c_str(), stdCode, uDate, items, count);
}

/**
 * @brief 导出历史K线数据
 * @details 将指定合约的历史K线数据导出到外部系统
 * @param stdCode 标准合约代码
 * @param period K线周期（如1m、5m、1d等）
 * @param bars K线数据数组
 * @param count K线数据数量
 * @return bool 导出是否成功
 */
bool ExpDumper::dumpHisBars(const char* stdCode, const char* period, WTSBarStruct* bars, uint32_t count)
{
	return getRunner().dumpHisBars(_id.c_str(), stdCode, period, bars, count);
}

/**
 * @brief 导出历史tick数据
 * @details 将指定合约的历史tick数据导出到外部系统
 * @param stdCode 标准合约代码
 * @param uDate 交易日期（格式：YYYYMMDD）
 * @param ticks tick数据数组
 * @param count tick数据数量
 * @return bool 导出是否成功
 */
bool ExpDumper::dumpHisTicks(const char* stdCode, uint32_t uDate, WTSTickStruct* ticks, uint32_t count)
{
	return getRunner().dumpHisTicks(_id.c_str(), stdCode, uDate, ticks, count);
}
